\newpage
\section{ИССЛЕДОВАТЕЛЬСКАЯ ЧАСТЬ}
\subsection{\textbf{Определение области применения разрабатываемого алгоритма}}
Нейронные сети в робототехнике используются на разных уровнях управления. Их можно применять для контроля отдельного привода в качестве нечёткого регулятора следящего устройства \cite{Single_Link_Control}, для создания человеко-машинного интерфейса при управлении роботом при помощи жестов \cite{Neto_Pires_Moreira_2009}, применять в качестве основы для машинного зрения и управлять робототехническим комплексом, состоящим из нескольких ПМР и их оснастки \cite{Jiang_Yang_Na_Li_Li_Zhong_2017}.

В рамках данной работы исследуются возможности использования нейронных сетей для поиска оптимальных траекторий движения манипуляционных роботов различных конфигураций в промышленных условиях.


\subsection{\textbf{Обзор существующих примеров использования НС для управления ПМР}}

Опыт применения ПМР в условиях производства показывает следующие значимые проблемы:
\begin{enumerate}[label=\arabic*)]
    \item \textbf{сложность учёта препятствий для планирования траекторий движения,} что приводит к сталкиванию робота с его оснасткой, станками и прочим оборудованием;
    \item \textbf{изменение динамических параметров манипулятора во время работы,} приводящее к ошибкам при точном позиционировании и сказывающееся на быстродействии робота;
    \item \textbf{попадание робота в сингулярную конфигурацию осей,} приводящее к резкому движению робота в местах сочленений и, следовательно, к ошибкам при учёте скорости движения программой управления;
    \item \textbf{невозможность прохождения по траектории без остановки и изменения конфигурации} из-за механических ограничениях в осях.
\end{enumerate}

Третья и четвертая проблемы связаны с механическим исполнением робота, количеством степеней подвижности робота и расположением осей манипулятора друг относительно друга.

Попытки обойти механические ограничения степеней подвижности манипулятора путём добавления избыточной подвижности манипулятору для достижения необходимой непрерывности траектории технологического процесса приводит к появлению сингулярностей, когда избыточность подвижности приводит к множеству способов достижения желаемой точки, что делает траекторию робота менее предсказуемой.

Изменение расположения степеней подвижности манипулятора или добавление дополнительных ограничений на них приводит к уменьшению коэффициента сервиса в точках области достижимости и, следовательно, увеличивает количество случаев невозможных непрерывных траекторий.
\newpage
Для решения данных проблем возможно использование нейронных сетей в алгоритмах управления роботами. При исследовании литературы найдены следующие примеры решения подобных задач с применением алгоритмов на основе НС.

В работе М. М. Кожевникова, А. П. Пашкевича, О. А. Чумакова "Планирование траекторий промышленных роботов-манипуляторов на основе нейронных сетей" \cite{Belarus_Art} предложен новый метод планирования траекторий роботов-манипуляторов в рабочей среде с препятствиями, основанный на использовании топологически упорядоченной нейронной
сети. Метод позволяет эффективно учесть сложную форму препятствий в промышленных роботизированных комплексах и обеспечивает приемлемое для практики количество тестов на столкновение.

В статье "Robust Adaptive Sliding Mode Neural Networks Control for Industrial Robot Manipulators" \cite{Yen_Wang_Cuong_2019} предлагается адаптивный контроллер с использованием нейронных сетей с радиально-базисной функцией активации для промышленных роботов-манипуляторов в условиях неизвестных динамических характеристик манипулятора. Эта предлагаемая структура управления сочетает в себе метод скользящего режима, аппроксимацию функции активации и адаптивный метод для повышения высокой точности следящего управления. Предлагаемый алгоритм на базе НС может успешно решать небольшие задачи благодаря своей простой структуре, более быстрым законам обновления обучения и лучшей аппроксимации для неизвестных динамических параметров манипулятора. Все параметры предлагаемой системы управления определяются теоремой устойчивости Ляпунова и настраиваются в режиме онлайн с помощью алгоритма адаптивного обучения. Таким образом, стабильность, надежность и желаемые характеристики отслеживания НС для ПМР гарантированы. Моделирование и эксперименты, выполненные на трехзвенном ПМР, предлагаются в сравнении с пропорциональным интегрально-дифференциальным контроллером и управлением на базе адаптивной нечетко-логической системы управления.

Для обхода проблем 3 и 4 предлагается использование манипуляторов с избыточной подвижностью, рассчитывающих свои траектории движения на основе сложных самообучающихся алгоритмов учитывающих конфигурацию манипулятора на несколько опорных точек вперёд текущей и подстраивающих своё движение для наиболее эффективного прохождения траектории.

Как показывает следующее исследование \cite{NW_Kinematics} современные алгоритмы кинематического управления ПМР на основе нейронных сетей достигают большей производительности при контролируемой точности, чем традиционные алгоритмы, а также  не имеет значительной зависимости от сложности конструкции и количества степеней подвижности манипулятора.

\newpage
В рамках данной работы разрабатывается алгоритм управления ПМР для решения перечисленных проблем. Основой этого алгоритма является самообучающийся контроллер на базе НС, используемый для расчёта оптимальной траектории движения. Данный контроллер можно разделить на основные три уровня:
\begin{itemize}
    \item \textbf{определение формы траектории движения, опорных точек на ней, направление и величину скорости инструмента в них --} уровень, на котором по заданному пользователем референсу траектории или по заданным основным точкам обрабатываемой детали строится математическое представление траектории движения;
    \item \textbf{поиск всех возможных решений ОЗК для опорных точек и связывание их в единое перемещение --} уровень работы нейросетевого алгоритма, оценивающего различные конфигурации ПМР в опорных точках по параметрам весовой функции;
    \item \textbf{контроль актуаторов степеней подвижности для обеспечения необходимых кинематических параметров движения --} уровень управления приводами на основе стандартных регуляторов или нечётких алгоитмов.
\end{itemize}

Для обеспечения точности работы нейросетевого алгоритма необходима тренировка НС и подбор параметров учёта входных данных. Тренировка заключается в обработке массива данных о перемещении манипулятора под действием управляющего воздействия, эти данные можно получить анализируя движения реального робота или проводя компьютерное моделирование в современных программных пакетах симуляции физических процессов и работы механизмов.

~

~

\subsection{\textbf{Обзор существующих программных комплексов для моделирования кинематики и динамики работы ПМР}}

Для использования программных комплексов моделирования работы ПМР в качестве среды обучения нейронных сетей данные пакеты должны отвечать ряду условий:
\begin{enumerate}[label=\arabic*)]
    \item \textbf{точно воспроизводить динамику ПМР в процессе работы} для обеспечения корректности работы обученного алгоритма в реальных условиях;
    \item \textbf{иметь возможность добавления кинематических схем или настройки существующих} для обучения алгоритма на широкой номенклатуре ПМР;
    \item \textbf{иметь графическую и численную визуализацию изменяющихся физических параметров ПМР} для возможности отслеживания прогресса обучения и отладки работы алгоритма;
    \item \textbf{иметь поддержку современных стандартов свободно используемых языков программирования;}
    \item \textbf{предоставлять инструменты для построения и настройки нейронных сетей.}
\end{enumerate}

На данный момент существует множество программ и программных пакетов для симуляции работы робототехнических комплексов. В рамках работы рассматриваются следующие образцы ПО:
\begin{enumerate}
    \item \textbf{Siemens Tecnomatix} \cite{soft_Siemens} -- программное обеспечение,позволяющее спроектировать роботизированные производственные ячейки, оптимизировать их производительность, автономно запрограммировать ПМР и промоделировать их работу.

    Плюсы:
    \begin{itemize}
        \item точное моделирование кинематики и динамики ПМР из библиотеки программы;
        \item возможность полной симуляции работы с учётом тонкостей техпроцесса, что позволяет легко проектировать РТК.
    \end{itemize}

    Минусы:
    \begin{itemize}
        \item поддерживает только номенклатуру роботов от партнёров компаний-партнёров Siemens;
        \item использует проприетарный язык SIRL (Siemens Industrial Robot Language);
        \item нет возможности программирования в сторонних средах и, следовательно, нет инструментов работы с НС.
    \end{itemize}
    
    \item \textbf{Visual Components} \cite{soft_Visual_Comp} -- это расширенный набор для проектирования и моделирования производственных линий. Можно моделировать и анализировать целые производственные процессы, включая робототехническое оборудование, материальный поток, действия человека-оператора и многое другое.

    Плюсы:
    \begin{itemize}
        \item хорошие графические возможности визуализации;
        \item обширная библиотека ПМР и компонентов РТК;        
        \item наличие пакетов расширения для расчётов различных параметров движения.
    \end{itemize}

    Минусы:
    \begin{itemize}
        \item устаревший стандарт языка Python, что ограничивает номенклатуру возможных библиотек для использования;
        \item необходимость в дополнительном пакете для моделирования динамики, который требует дополнительного изучения документации для корректного использования.
    \end{itemize}
    
    \item \textbf{RoboDK} \cite{soft_RoboDK} -- инструмент оффлайн программирования для промышленных роботов. Он позволяет создавать программы для робота с использованием Python или задавать движение визуально благодаря интегрированной среде 3D-моделирования.

    Плюсы:
    \begin{itemize}
        \item возможность визуального программирования ПМР;
        \item поддержка скриптовых языков программирования и языков программирования производителей роботов;
        \item возможность использования моделей ПМР, созданных в программах моделирования.
    \end{itemize}

    Минусы:
    \begin{itemize}
        \item отсутствие поддержки быстрых языков программирования, что уменьшает быстродействие системы.
    \end{itemize}

    ~

    \item \textbf{SprutCAM Robot} \cite{soft_SprutCAM} -- программное обеспечение для оффлайн программирования российского производства, позволяющее проектировать робототехнические ячейки и комплексы, рассчитывать траектории движения при различных технологических процессах для роботов от разных производителей 

    Плюсы:
    \begin{itemize}
        \item для программирования ПМР доступен специальный функционал: контроль столкновений, обход зоны сингулярности, контроль пределов рабочей зоны;
        \item используя стандартные шаблоны, можно быстро создавать собственные кинематические модели роботизированных ячеек.
    \end{itemize}

    Минусы:
    \begin{itemize}
        \item нет возможности работы со стандартными языками программирования
        \item сложность подключения НС в качестве системы управления.
    \end{itemize}
\end{enumerate}

~

~

По результатам обзора получаем следующую сравнительную таблицу:

\begin{gosttable}
\begin{table}[h!]
\centering
\caption{Сравнительная таблица пакетов компьютерного моделирования}
\label{tab:my-table}
\resizebox{\columnwidth}{!}{%
\begin{tabular}{r|c|c|c|c|}
\cline{2-5}
\multicolumn{1}{l|}{}  &       \begin{tabular}[c]{@{}r@{}} ~ \\ \textbf{Siemens Tecnomatix}\\~\end{tabular}& \begin{tabular}[c]{@{}r@{}} ~ \\ \textbf{Visual Components}\\~\end{tabular}& \begin{tabular}[c]{@{}r@{}} ~ \\ \textbf{RoboDK}\\~\end{tabular}& \begin{tabular}[c]{@{}r@{}} ~ \\ \textbf{SprutCAM Robot}\\~\end{tabular} \\ \hline
\multicolumn{1}{|r|}{\begin{tabular}[c]{@{}r@{}}~ \\Точное моделирование\\ динамики ПМР\\~\end{tabular}}                                                  & \textbf{\huge{+}}                  & \begin{tabular}[c]{@{}c@{}}~\\ \textbf{\huge{+}}\\ При использовании\\ дополнений\end{tabular} & \begin{tabular}[c]{@{}c@{}}~\\ \textbf{\huge{+}}\\ При использовании\\ дополнений\end{tabular} & \textbf{\huge{+}}              \\ \hline
\multicolumn{1}{|r|}{\begin{tabular}[c]{@{}r@{}}~\\Возможность добавления\\ настраиваемых\\ кинематических схем\\~\end{tabular}}                         & \textbf{\huge{-}}                          & \textbf{\huge{+}}                          & \textbf{\huge{+}}                          & \textbf{\huge{+}}             \\ \hline
\multicolumn{1}{|r|}{\begin{tabular}[c]{@{}r@{}}~\\Визуализация результатов\\ моделирования в виде графиков\\~\end{tabular}}& \textbf{\huge{-}}                          & \textbf{\huge{-}}                          & \begin{tabular}[c]{@{}c@{}}~\\ \textbf{\huge{+}}\\ При использовании\\ дополнений\end{tabular} & \textbf{\huge{+}}              \\ \hline
\multicolumn{1}{|r|}{\begin{tabular}[c]{@{}r@{}}~\\Возможность работы\\ с открытыми языками\\ программирования\\ современных стандартов\\~\end{tabular}}                   & \textbf{\huge{-}}                          & \textbf{\huge{-}}                          & \textbf{\huge{+}}                          & \textbf{\huge{-}}              \\ \hline
\multicolumn{1}{|r|}{\begin{tabular}[c]{@{}r@{}}~\\Наличие инструментов работы\\ с нейронными сетями\\~\end{tabular}}            & \textbf{\huge{-}}                          & \begin{tabular}[c]{@{}c@{}}~\\ \textbf{\huge{+}}\\ При использовании\\ дополнений\end{tabular}                    & \textbf{\huge{-}}                          & \textbf{\huge{-}}                  \\ \hline
\end{tabular}%
}
\end{table}
\end{gosttable}


\newpage
\subsection{\textbf{Определение требований для разрабатываемого программного пакета для моделирования}}

Ни в одном из перечисленных выше пакетов компьютерного моделирования не представлен в полной мере функционал для разработки и тестирования исследуемого алгоритма управления ПМР. В связи с этим принято решение о разработке программного обеспечения с использованием методов симуляции из рассмотренных приложений и научной литературы.



Структура приложения показана в таблице:
\begin{gosttable} % Рамки для счётчика таблиц
    \begin{table}[h!] % Рамки для отрисовки
        \centering % Центрирование
        \caption{Структура разрабатываемого программного комплекса} % Название таблицы
        \resizebox{\columnwidth}{!}{%
\begin{tabular}{|cccccc|}
\hline
\multicolumn{6}{|c|}{{\begin{tabular}[c]{@{}c@{}}~\\ \huge{Приложение: «CAR – Computer Aided Robotics»} \\ ~ \end{tabular}}}\\ \hline
\multicolumn{1}{|c|}{\multirow{3}{*}{\begin{tabular}[c]{@{}c@{}}\Large{Основные}\\ \Large{математические}\\ \Large{функции}\end{tabular}}} & \multicolumn{3}{c|}{{\begin{tabular}[c]{@{}c@{}}~\\ \Large{Функции работы с роботом} \\ ~ \end{tabular}}} & \multicolumn{2}{c|}{\Large{Интерфейс пользователя}} \\ \cline{2-6} 
\multicolumn{1}{|c|}{}& \multicolumn{1}{c|}{\large{Задание траектории}}                                                                                                             & \multicolumn{1}{c|}{\begin{tabular}[c]{@{}c@{}}~\\ \large{Определение}\\ \large{конфигурации робота}\\~\end{tabular}}                                    & \multicolumn{1}{c|}{\begin{tabular}[c]{@{}c@{}}\large{Управление}\\ \large{приводами}\end{tabular}}                 & \multicolumn{1}{c|}{\multirow{2}{*}{\begin{tabular}[c]{@{}c@{}} \large{Основной}\\ \large{интерфейс}\end{tabular}}} & \multirow{2}{*}{\begin{tabular}[c]{@{}c@{}}\large{Средства} \\ \large{отображения}\\ \large{3Д моделей}\end{tabular}} \\ \cline{2-4}
\multicolumn{1}{|c|}{}                                                                                             & \multicolumn{1}{c|}{\begin{tabular}[c]{@{}c@{}}~\\Базовые движения:\\ PTP, LIN, CIRC;   \\ Сплайновые функции;   \\ Разбиение траекторий\\~\end{tabular}} & \multicolumn{1}{c|}{\begin{tabular}[c]{@{}c@{}}Решение ОЗК и ОЗД;\\ Использование НС\\ для нахождения\\ траектории.\end{tabular}} & \multicolumn{1}{c|}{\begin{tabular}[c]{@{}c@{}}Регуляторы,\\ корректирующие\\ звенья.\end{tabular}} & \multicolumn{1}{c|}{}                                                                              &                                                                                              \\ \hline
\end{tabular}%
}
\end{table}
\end{gosttable}

В качестве основного языка программирования выбран объектно-ориентируемый язык C++ с системой сборки CMake и компилятором CLang 16.0.5.

В качестве языка взаимодействия оператора с роботом и для настроек параметров нейронной сети выбран высокоуровневый язык Python 3.

~

\textbf{Ограничения возможностей ПО}

Область использования данного программного обеспечения ограничена следующими параметрами:

\begin{enumerate}[label =  \arabic*)]
    \item использование только разомкнутых кинематических цепей;
    \item оси степеней подвижности в начальной конфигурации параллельны мировым осям XYZ;
    \item алгоритм избегания столкновения лишь со статическими препятствиями и с подвижными устройствами, находящимися в одной сети обмена информацией.
\end{enumerate}